#include "Sql_list.h"

void Init_Sql_List(Sql_list *L)
{
    L->len = 0;
    return;
}
void tail_insert_list(Sql_list *L, Elenemt_data data)
{
    if (NULL == L)
    {
        printf("表为空");
    }
    if (MAX_SIZ <= L->len)
    {
        printf("顺序表 为 满 \n");
        return;
    }
    L->data[L->len] = data;
    L->len++;
    return;
}
void printf_Sql_List(Sql_list *L)
{
    // 安全判断
    if (NULL == L)
    {
        printf("顺序表 为 NULL \n");
        return;
    }
    if (0 == L->len)
    {
        printf("顺序表 内 无数据 \n");
        return;
    }

    for (size_t i = 0; i < L->len; i++)
    {
        printf("姓名:%s 性别:%s 年龄:%d 成绩:%d 学号:%d\n",
               L->data[i].name, L->data[i].sex, L->data[i].age,
               L->data[i].sco, L->data[i].id);
    }
}
void tail_del_list(Sql_list *L)
{
    if (NULL == L)
    {
        printf("顺序表 为 NULL \n");
        return;
    }
    if (0 >= L->len)
    {
        printf("顺序表 内 无数据 \n");
        return;
    }

    // memset(&L->data[L->len] , sizeof(L->data[0]) , 0);
    L->len--;

    return;
}

// 顺序表的判空：
void IsEmpty_Sql_List(Sql_list *L)
{
    if (L == NULL)
    {
        printf("表为NULL\n");
    }
    if (L->len == 0)
    {
        printf("表为0\n");
    }
}
// 顺序表的清空：
void Clear_Sql_List(Sql_list *L)
{
    memset(&L->data, MAX_SIZ * sizeof(L->data[0]), 0);
    L->len = 0;
}

// 顺序表的定点插入
void pos_insert_list(Sql_list *L, int index, Elenemt_data data)
{       if (L == NULL)
    {
        printf("表为NULL\n");
    }
    if (L->len == 0 && index != 0)
    {
        printf("表为0且index输入错误\n");
    }
    for (int i = L->len; i >= L->len - (L->len - index) - 1; i--)
    {
        L->data[i + 1] = L->data[i];
    }
    L->data[index - 1] = data;
    L->len++;
}
// 顺序表的定点删除
void pos_del_list(Sql_list *L, int index)
{       if (L == NULL)
    {
        printf("表为NULL\n");
    }
    if (L->len == 0 && index != 0)
    {
        printf("表为0且index输入错误\n");
    }
    for (int i = index; i < L->len; i++)
    {
        L->data[i - 1] = L->data[i];
    }
    memset(&L->data, sizeof(L->data[9]), 0);
    L->len--;
    printf("%d    \n", L->len);
}
//顺序表合并
Sql_list * Merge_Sql_Lists(Sql_list * L1 , Sql_list * L2)
{       if (L1 == NULL)
    {
        printf("表为NULL\n");
    }
    if (L2 == NULL)
    {
        printf("表为NULL\n");
    }
    for (int i = L1->len; i < L1->len+L2->len; i++)
    {
        L1->data[i] = L2->data[i-L1->len];
    }
    L1->len = L1->len+L2->len;
    return  L1;
}
//顺序表的扩容
Sql_list * Expand_Sql_List(Sql_list * L , int len)
{   
     if (L == NULL)
    {
        printf("表为NULL\n");
    }
    L->len = len;
    return  L;
    
}

// 顺序表的查找：
Elenemt_data * find_by_index(Sql_list * L , int index)
{
    if (L == NULL)
    {
        printf("表为NULL\n");
    }
    if (L->len-1 <= index)
    {
        printf("index大于顺序表长度\n");
    }
    return  L->data[index];

}